文本三剑客(剩余的sed awk)

您所在的位置:网站首页 awk 跳过第一行 文本三剑客(剩余的sed awk)

文本三剑客(剩余的sed awk)

2023-04-01 01:29| 来源: 网络整理| 查看: 265

系列文章目录

`

文章目录 系列文章目录一、sed1.sed命令的操作符2.sed的打印3.面试题 二、awk1.内置变量2.awk打印 总结

一、sed

sed是行编辑器

1.sed命令的操作符

s:替换,替换指定字符。wj wjj d:删除,删除选定的行。 a:增加,在当前行下面增加一行指定内容。 i:插入,在选定行上面插入一行指定内容。(即时生效) c:替换,将选定行替换为指定内容。 y:字符转换,转换前后的字符长度必须相同。 p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。 =:打印行号。 l(小写L):打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t) r:高级正则表达式 在这里插入图片描述

sed最为核心的功能是增删改查

2.sed的打印

方式一:按照行号寻求内容 [root@localhost sed]#sed -n ‘1p’ test1.txt --打印第一行 [root@localhost sed]#sed -n ‘4p’ test1.txt --打印第四行 [root@localhost sed]#sed -n ‘KaTeX parse error: Expected 'EOF', got '#' at position 59: …@localhost sed]#̲sed -n '1,3p' t…p’ test1.txt --打印第五行到最后一行 [root@localhost sed]#sed -n ‘2,+2p’ test1.txt —打印第二行+两行的内容,相当于2,4p 方式三:指定间隔打印 [root@localhost sed]#sed -n -e ‘2p’ -e’$p’ test1.txt —打印第二行和最后一行 [root@localhost sed]#sed -n -e ‘2p’ -e’3p’ test1.txt —打印第二行和第三行 方式四:对奇数行和偶数行的打印 [root@localhost sed]#sed -n ‘n;p’ test1.txt —打印偶数的行 [root@localhost sed]#sed -n ‘p;n’ test1.txt —打印奇数的行 n在p前面,跳过一在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

行,打印下一行,就是偶数行;在后面,就是打印第一行,然后跳过一行,形成奇数行

3.面试题

查看指定时间内的日志: [root@localhost ~]#sed -n ‘/2023:08:09/,/2023:09:42:37/p’ /var/log/messages #没有内容 [root@localhost network-scripts]# sed -n ‘/Mar 23 21:00:01/,/Mar 23 21:30:01/p’ /var/log/messages #开头的格式要一致 Mar 23 21:00:01 localhost systemd: Started Session 70 of user root.

修改网卡的IP地址 [root@localhost network-scripts]# sed -i ‘/IPADDR=192.168.169.10/c IPADDR=10.10.10.10’ ifcfg-ens33

总结: 总结:

1.sed命令是一种流编辑器读取文件会进行逐行读取加上指令操作,所以过大的文件一定要拆分后再交给sed处理 2.sed -r 搭配扩展正则表达式使用,使用{n} {n,} {n,m} 不需要加“\” 3.用 -i 时一定要先备份(尤其对重要文件的操作),或者时先实验好确定无误时,再使用 -i 4.sed 命令 的重点在于增删改查四个功能,可以运用在脚本中对重要文件配置的修改,添加等作用尤其有效

二、awk

注意一定是单引号:‘模式或条件 {操作}’

1.内置变量

$0: 当前处理的行的整行内容 n : 当前处理行的第 n 个字段(第 n 列) N R : 当前处理的行的行号(序数) N F : 当前处理的行的字段个数。 n: 当前处理行的第n个字段(第n列) NR: 当前处理的行的行号(序数) NF: 当前处理的行的字段个数。 n:当前处理行的第n个字段(第n列)NR:当前处理的行的行号(序数)NF:当前处理的行的字段个数。NF代表最后一个字段 FS: 列分割符。指定每行文本的字段分隔符,输入内容的分隔符 默认为空格或制表位。与"-F"作用相同 用-F可以不加单引号 -F:,用FS必须用=“” OFS:输出内容的列分隔符 FILENAME:被处理的文件名 RS: 行分隔符。awk从文件中读取资料时, 将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是"\n" 在这里插入图片描述

2.awk打印

awk ‘{print $0}’ test1.txt ----$0,代表整行内容;awk是逐行读取处理,配合$0,就是打印所有内容 $1只取第一列,可以对行切片,输出列 [root@localhost opt]#awk ‘{print NR}’ test1.txt ----打印行号,告诉我们有几行; [root@localhost opt]#awk ‘{print NR,$0}’ test1.txt ----不仅打印行号,还把每行对应的内用一起展示, 比sed展示的内容更直观 [root@localhost opt]#awk ‘NR3{print}’ test1.txt ----指定打印出第三行的内容 [root@localhost opt]#awk 'NR3,NR5{print}’ test1.txt ----打印3-5行的内容 [root@localhost opt]#awk 'NR3;NR5{print}’ test1.txt ----打印第三行和第五行 [root@localhost opt]awk ‘(NR>=3)&&(NR



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3